home *** CD-ROM | disk | FTP | other *** search
- CLIP EQU 0
- assume cs:ddi
- ddi segment para public 'code'
- public ddinf, ddisb
-
- include dos.inc
-
-
- db "<<DDISB>>" ; for debug purposes
-
- MINx equ 0 ; screen extents
- MAXx equ 967 ; " "
- MINy equ 0 ; " "
- MAXy equ 511 ; " "
-
- kx equ [bp+8] ; stack frame argument positions
- ky equ [bp+6]
-
- ddisb proc far ; ddisb (kx,ky : integer) { set bit at kx,ky }
- push bp ; save bp
- mov bp,sp ; bp is now base pointer to stack frame (args)
- push cx ; save registers
- push dx ; save registers
- mov cx,kx ; column number
- mov dx,ky ; row number
- IF CLIP
- cmp cx,MINx ; check for MINx <= kx <= MAXx
- jb noplot
- cmp cx,MAXx
- ja noplot
- cmp dx,MINy ; check for MINy <= kx <= MAXy
- jb noplot
- cmp dx,MAXy
- ja noplot
- ENDIF
- push ax ; save register
- mov al,81h ; want exclusive-OR with current color
- mov ah,$VIDEO_SETDOT ; code to set a dot in video map
- int $VIDEO ; set the dot
- pop ax ; restore register
- noplot: ; skip here if (kx,ky) out of range
- pop dx ; restore register
- pop cx ; restore register
- pop bp ; restore bp
- ret 4 ; return to caller, popping 2 args
- ddisb endp
-
- db "<<DDINF>>" ; for debug purposes
-
- ddinf proc far ; ddinf; {new frame - clear screen}
- push ax
- mov al,8 ; QS mode
- mov ah,$VIDEO_SETMODE
- int $VIDEO
- mov ah,18 ; QS clear screen function code
- int $VIDEO ; clear the screen
- pop ax
- ret ; return to caller
- ddinf endp
-
- ddi ends
- end